import java.util.Arrays;
import java.util.Scanner;


// 注意类名必须为 Main, 不要有任何 package xxx 信息
 class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int n=in.nextInt();
        int[] dp=new int[n+1];
        dp[0]=0;

        if(n==1){
            dp[1]=1;
        }

        if(n>=2){
            dp[1]=1;
            dp[2]=2;

        }


        for(int i=3;i<=n;i++){

            dp[i]=dp[i-1]+dp[i-2];

        }

        System.out.println(dp[n]);
        Arrays.sort();



    }
}




// 注意类名必须为 Main, 不要有任何 package xxx 信息
 class Main1 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int count=0;
        String str1=in.next();
        StringBuffer str=new StringBuffer();
        for(int i=str1.length()-1;i>=0;i--){
            char a=str1.charAt(i);
            if(count%3==0&&count!=0){
                str.append(',');
            }
            str.append(a);
            count++;


        }

        for(int i=str.length()-1;i>=0;i--){
            System.out.print(str.charAt(i));


        }


    }
}






 class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param numbers int整型一维数组
     * @return bool布尔型
     */
    public boolean IsContinuous (int[] numbers) {
        // write code here

        Arrays.sort(numbers);



        int count=0;
        for(int i=4;i>=0;i--){
            if(numbers[i]==0){
                count++;

            }

            if(i>0&&numbers[i-1]!=0){
                int n=numbers[i]-numbers[i-1];
                if(n==12&&n==0){

                    continue;
                }
                count-=n;
                count++;


            }
        }

        if(count<0){
            return false;
        }

        return true;


    }
}